<?php

/**
 * Theme
 */
class Theme
{
	const TABLE_THEME	= 'theme';
	const ID_THEME		= 'CodeTheme';
	const LIBELLE_THEME	= 'LibelleT';
	
    /**
     * @var integer
     */
    private $id;

    /**
     * @var string
     */
    private $libelle;

    public static function findAll()
    {
    	$CI = get_instance();
    
    	$CI->load->database('db_adc', true);
    	 
    	$resultat = $CI->db	->select(self::ID_THEME.','.self::LIBELLE_THEME)
				    		->from(self::TABLE_THEME)
				    		->get()
				    		->result_array();
    	 
    	$themes = array();
    	 
    	if(!empty($resultat))
    	{
    		foreach($resultat as $r)
    		{
    			$theme = new Theme();
    			$theme->setId($r[self::ID_THEME]);
    			$theme->setLibelle($r[self::LIBELLE_THEME]);
    			 
    			$themes[] = $theme;
    		}
    	}
    	 
    	return $themes;
    }
    
    /**
     * Fonction permettant de récupérer un theme en fonction de son identifiant
     * @param integer $id identifiant du theme
     * @return Theme
     */
    public static function findById($id)
    {
    	$CI = get_instance();
    		
    	$CI->load->database('db_adc', true);
    		
    	$resultat = $CI->db	->select(self::ID_THEME.','.self::LIBELLE_THEME)
				    		->from(self::TABLE_THEME)
    	->where(self::ID_THEME, $id)
    	->limit(1)
    	->get()
    	->result_array();
    		
    	if(!empty($resultat))
    	{
    		$theme = new Theme();
    		$theme->setId($resultat[0][self::ID_THEME]);
    		$theme->setLibelle($resultat[0][self::LIBELLE_THEME]);
    
    		return $theme;
    	}
    	return false;
    }
    
    /**
     * Fonction permettant d'ajouter un theme
     * @param string $libelle libelle du theme
     * @return true ou false
     */
    public static function addTheme($libelle)
    {
    	$CI = get_instance();
    		
    	$CI->load->database('db_adc', true);
    	
    	$CI->db->set(self::LIBELLE_THEME, $libelle);
    	
    	return $CI->db->insert(self::TABLE_THEME);
    }
    
    /**
     * Fonction permettant de modifier un theme
     * @param int $id id du theme
     * @param string $libelle libelle du theme
     * @return true ou false
     */ 
    public static function modifyTheme($id, $libelle)
    {
    	$CI = get_instance();
    	
    	$CI->load->database('db_adc', true);
    	 
    	$CI->db->set(self::LIBELLE_THEME, $libelle);
    	
    	$CI->db->where(self::ID_THEME, (int)$id);
    	 
    	return $CI->db->update(self::TABLE_THEME);
    }
    
    /**
     * Fonction permettant de supprimer un theme
     * @param int $id id du theme
     * @return true ou false
     */
    public static function delTheme($id)
    {
    	$CI = get_instance();
    	 
    	$CI->load->database('db_adc', true);
    	
    	return $CI->db->where(self::ID_THEME, (int)$id)
    				->delete(self::TABLE_THEME);
    }
    
    /**
     * Permet de vérifier le formulaire de modification et de création d'un theme
     * @param String $libelle
     * @return boolean
     */
    public static function check($libelle)
    {
    	if($libelle == null || $libelle == " ")
    	{
    		$CI =& get_instance();
    		$CI->session->set_flashdata('message', 'Le libelle doit être renseigné.');
    	}
    	else 
    		return true;    	
    }
    
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

 	/**
     * Set id
     *
     * @param integer id
     * @return Theme
     */
    public function setId($id)
    {
        $this->id = $id;
    }

    /**
     * Set libelle
     *
     * @param string $libelle
     * @return Theme
     */
    public function setLibelle($libelle)
    {
        $this->libelle = $libelle;
    }

    /**
     * Get libelle
     *
     * @return string 
     */
    public function getLibelle()
    {
        return $this->libelle;
    }
}
